#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Converts all text in <body> to morse. (For the fun)
"""

import xml.dom.minidom

def _convert_to_morse(text):
	text = (text.lower()
		.replace(u' ', u' | ')
		.replace(u'.', u' § ')
		.replace(u',', u' § ')
		.replace(u'a', u' .- ')
		.replace(u'b', u' -... ')
		.replace(u'c', u' -.-. ')
		.replace(u'd', u' -.. ')
		.replace(u'e', u' . ')
		.replace(u'f', u' ..-. ')
		.replace(u'g', u' --. ')
		.replace(u'h', u' .... ')
		.replace(u'i', u' .. ')
		.replace(u'j', u' .--- ')
		.replace(u'k', u' -.- ')
		.replace(u'l', u' .-.. ')
		.replace(u'm', u' -- ')
		.replace(u'n', u' -. ')
		.replace(u'o', u' --- ')
		.replace(u'p', u' .--. ')
		.replace(u'q', u' --.- ')
		.replace(u'r', u' .-. ')
		.replace(u's', u' ... ')
		.replace(u't', u' - ')
		.replace(u'u', u' ..- ')
		.replace(u'v', u' ...- ')
		.replace(u'w', u' .-- ')
		.replace(u'x', u' -..- ')
		.replace(u'y', u' -.-- ')
		.replace(u'z', u' --.. '))
	return text;


def execute_minidom(server, document, parameters, current_node=None, found_body=False):
	if not current_node:
		current_node = document

	for n in current_node.childNodes:
		if n.nodeType in (document.TEXT_NODE, document.CDATA_SECTION_NODE):
			if found_body:
				text = _convert_to_morse(n.data)
				current_node.insertBefore(document.createTextNode(text), n)
				current_node.removeChild(n)

		elif n.nodeType == document.ELEMENT_NODE:
			execute_minidom(server, document, parameters, n, found_body or n.localName == 'body')
